//#define _CRT_SECURE_NO_WARNINGS 1
//#include<iostream>
//#include<stack>
//#include<string>
//using namespace std;
///*int main(){
//	string s;
//	stack<string> sstack;
//	while(cin>>s){
//		sstack.push(s);
//	}
//	while(sstack.size()!=1){
//		cout<<sstack.top()<<" ";
//		sstack.pop();
//	}
//	cout<<sstack.top()<<endl;
//	return 0;
//}*/
//
//int main()
//{
//	string s;
//
//	while (cin >> s)
//	{
//		stack<string> sstack;
//		sstack.push(s);
//		while (sstack.size() != 1)
//		{
//			cout << sstack.top() << " ";
//			sstack.pop();
//		}
//		cout << sstack.top() << endl;
//	}
//	return 0;
//}

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string words;
    while (getline(cin, words)) {
        reverse(words.begin(), words.end());
        unsigned i = 0, j = i;
        while (i < words.size()) {
            while (i < words.size() && words[i] != ' ')
                ++i;
            reverse(words.begin() + j, words.begin() + i);
            j = ++i;
        }
        cout << words << endl;
    }
    return 0;
}